/**
 * \file utils.h
 * \brief Header pour des fonctions utiles utilisés en commun .
 * \author 
 * \version 0.14
 * \date 22 février 2011
 *
 * Implémentation des fonctions aider l'affichage de l'écran LCD.
 *
 */

#ifndef H_UTILS
#define H_UTILS
/**
*\def _100us
*\def _10us
*\def bitset(var,bitno)
* mise à 1 du bit bitno du registre var
*\def bitclr(var,bitno)
* mise à 0 du bit bitno du registre var
*\def B1
* bouton 1
*\def B2
* bouton 2
*\def B3
* bouton 3
*\def B4
* bouton 3
*\def DELAY_10ms
*\def DELAY_100ms
*\def DELAY_1sec
*\def DELAY_10sec
*\def DELAY_1min
*\def BYTE_SYNC_1
* Octet de synchro pour l'IrDA
*\def BYTE_SYNC_2
* Octet de synchro pour l'IrDA
*\def BYTE_SYNC_3
* Octet de synchro pour l'IrDA
*\def CODE_MENU
* code de commande pour aller au mode menu
*\define CODE_MORE
* code de commande plus
*\define CODE_LESS
* code de commande moins
*\define CODE_PLAY
* code de commande jouer
*\define CODE_NEXT
* code de commande suivant
*\define CODE_PREV
* code de commande précedent




*\define COM_B1	
*\define COM_B2	
*\define COM_B3	
*\define COM_B4	
*\define COM_B1_LONG
*\define COM_B2_LONG
*\define COM_B3_LONG
*\define COM_B4_LONG
*\define COM_ERR
*\define COM_MORE
*\define COM_NEXT
*\define COM_LESS
*\define COM_PREV
*\define COM_PLAY
*\define COM_MENU

*\define ON	
*\define OFF	
*\define MANUEL		
*\define AUTO		


*\define DO_BIP		
* code pour le buzzer
*\define CANCEL_BIP	
* code pour le buzzer
*
*/


#include <includes.h>

#define          _100us             100                //
#define          _10us              10                 //

#define bitset(var,bitno) ((var) |= 1 << (bitno))
#define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))

#define          B1                 BIT4&P4IN         //B1 - P4.4
#define          B2                 BIT5&P4IN         //B2 - P4.5
#define          B3                 BIT6&P4IN         //B3 - P4.6
#define          B4                 BIT7&P4IN         //B4 - P4.7

#define		DELAY_10ms				1
#define		DELAY_100ms				10
#define		DELAY_1sec				100
#define		DELAY_10sec				1000
#define		DELAY_1min				6000

//////IRDA
#define		BYTE_SYNC_1	119
#define		BYTE_SYNC_2	119
#define		BYTE_SYNC_3	-43

#define		CODE_MENU	-2211
#define		CODE_MORE	22391
#define		CODE_LESS	-41
#define		CODE_PLAY	-2187
#define		CODE_NEXT	-2185
#define		CODE_PREV	-43
#define		BYTE_LONG_1	0
#define		BYTE_LONG_2	-64
#define		BYTE_LONG_3	-1



//////COMMANDE


#define		COM_B1		1
#define		COM_B2		2
#define		COM_B3		3
#define		COM_B4		4
#define		COM_B1_LONG	5
#define		COM_B2_LONG	6
#define		COM_B3_LONG	7
#define		COM_B4_LONG	8
#define		COM_ERR		10
#define		COM_MORE	11
#define		COM_NEXT	12
#define		COM_LESS	13
#define		COM_PREV	14
#define		COM_PLAY	15
#define		COM_MENU	16

#define		COM_MORE_LONG	17
#define		COM_NEXT_LONG	18
#define		COM_LESS_LONG	19
#define		COM_PREV_LONG	20
#define		COM_PLAY_LONG	21
#define		COM_MENU_LONG	22

#define 	ON		1
#define		OFF		2
#define		MANUEL		1
#define		AUTO		2


/////// BIP
#define 	DO_BIP		1
#define		CANCEL_BIP	2


/////// STATS
#define		STATS_STOP	1
#define		STATS_RESUME	2



#define MODE_STATION	0
#define MODE_MANUEL	1

#define MODE_FREQUENCE  0
#define MODE_VOLUME	1
/**
 * \fn void delay (unsigned int a)
 * \brief Retarder a us.
 * 
 * \param a le nombre de us à retarder
 *
 */
void delay (unsigned int a);
/**
 * \fn delayMinMaj(unsigned int minor, unsigned int major)
 * \brief Afficher un caractères à une position précise sur l'écran.
 * 
 * \param a Caractère à afficher
 * \param ligne Numéro de ligne à afficher
 * \param pos Position dans la ligne à afficher
 *
 */
void delayMinMaj(unsigned int minor, unsigned int major);
/**
 * \fn void delayx100us(unsigned char b)
 * \brief Retarder bx100 us.
 * 
 * \param b nombre de 100us à retarder
 *
 */
void delayx100us(unsigned char b);
/**
 * \fn void getBus()
 * \brief Prend en main le bus.
 * 
 */
void getBus();
/**
 * \fn void releaseBus()
 * \brief Liberet le bus.
 * 
 */
void releaseBus();
/**
 * \fn INT32U getPressedButton()
 * \brief Retourner le bouton correspondant.
 * \return le bouton correspondant
 *
 */
// Retourne le numero du bouton appuyé
// Valeur entre 0 et 3 
INT32U getPressedButton();


#endif
